home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue68 / Alfresco / TstToken.dpr < prev   
Encoding:
Text File  |  2001-03-04  |  4.2 KB  |  184 lines

  1. program TstToken;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils,
  7.   Classes,
  8.   AAChrStm,
  9.   AAPasTok in 'AAPasTok.pas';
  10.  
  11.  
  12. var
  13.   F         : TFileStream;
  14.   InF       : TaaInCharStream;
  15.   T         : system.text;
  16.   PrevType  : TaaPascalToken;
  17.   TokenType : TaaPascalToken;
  18.   Token     : string;
  19.   Count     : integer;
  20. begin
  21.   F := nil;
  22.   InF := nil;
  23.   try
  24.     F := TFileStream.Create('aapastok.pas', fmOpenRead or fmShareDenyWrite);
  25.     InF := TaaInCharStream.Create(F);
  26.  
  27.     System.Assign(T, 'c:\zzpastok.pas');
  28.     System.Rewrite(T);
  29.     try
  30.       Count := 0;
  31.       PrevType := ptEndOfFile;
  32.       aaGetToken(InF, TokenType, Token);
  33.       while (TokenType <> ptEndOfFile) do begin
  34.         case TokenType of
  35.           ptKeyword, ptIdentifier, ptNumber :
  36.             begin
  37.               if (PrevType = ptKeyWord) or
  38.                  (PrevType = ptIdentifier) or
  39.                  (PrevType = ptNumber) then begin
  40.                 write(T, ' ');
  41.                 inc(Count);
  42.               end;
  43.               write(T, Token);
  44.               inc(Count, length(Token));
  45.             end;
  46.           ptString :
  47.             begin
  48.               write(T, Token);
  49.               inc(Count, length(Token));
  50.             end;
  51.           ptComma :
  52.             begin
  53.               write(T, ',');
  54.               inc(Count);
  55.             end;
  56.           ptSemicolon :
  57.             begin
  58.               write(T, ';');
  59.               inc(Count);
  60.             end;
  61.           ptColon :
  62.             begin
  63.               write(T, ':');
  64.               inc(Count);
  65.             end;
  66.           ptPeriod :
  67.             begin
  68.               write(T, '.');
  69.               inc(Count);
  70.             end;
  71.           ptRange :
  72.             begin
  73.               write(T, '..');
  74.               inc(Count, 2);
  75.             end;
  76.           ptEquals :
  77.             begin
  78.               write(T, '=');
  79.               inc(Count);
  80.             end;
  81.           ptNotEquals :
  82.             begin
  83.               write(T, '<>');
  84.               inc(Count, 2);
  85.             end;
  86.           ptLess :
  87.             begin
  88.               write(T, '<');
  89.               inc(Count);
  90.             end;
  91.           ptLessEqual :
  92.             begin
  93.               write(T, '<=');
  94.               inc(Count, 2);
  95.             end;
  96.           ptGreater :
  97.             begin
  98.               write(T, '>');
  99.               inc(Count);
  100.             end;
  101.           ptGreaterEqual :
  102.             begin
  103.               write(T, '>=');
  104.               inc(Count, 2);
  105.             end;
  106.           ptAssign :
  107.             begin
  108.               write(T, ':=');
  109.               inc(Count, 2);
  110.             end;
  111.           ptOpenParen :
  112.             begin
  113.               write(T, '(');
  114.               inc(Count);
  115.             end;
  116.           ptCloseParen :
  117.             begin
  118.               write(T, ')');
  119.               inc(Count);
  120.             end;
  121.           ptOpenBracket :
  122.             begin
  123.               write(T, '[');
  124.               inc(Count);
  125.             end;
  126.           ptCloseBracket :
  127.             begin
  128.               write(T, ']');
  129.               inc(Count);
  130.             end;
  131.           ptCaret :
  132.             begin
  133.               write(T, '^');
  134.               inc(Count);
  135.             end;
  136.           ptHash :
  137.             begin
  138.               write(T, '#');
  139.               inc(Count);
  140.             end;
  141.           ptAddress :
  142.             begin
  143.               write(T, '@');
  144.               inc(Count);
  145.             end;
  146.           ptPlus :
  147.             begin
  148.               write(T, '+');
  149.               inc(Count);
  150.             end;
  151.           ptMinus :
  152.             begin
  153.               write(T, '-');
  154.               inc(Count);
  155.             end;
  156.           ptMultiply :
  157.             begin
  158.               write(T, '*');
  159.               inc(Count);
  160.             end;
  161.           ptDivide :
  162.             begin
  163.               write(T, '/');
  164.               inc(Count);
  165.             end;
  166.         end;
  167.         if (Count >= 70) then begin
  168.           writeln(T);
  169.           Count := 0;
  170.         end;
  171.         if (TokenType <> ptComment) then
  172.           PrevType := TokenType;
  173.         aaGetToken(InF, TokenType, Token);
  174.       end;
  175.  
  176.     finally
  177.       System.Close(T);
  178.     end;
  179.   finally
  180.     InF.Free;
  181.     F.Free;
  182.   end;
  183. end.
  184.